<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Symbol实现单例模式</title>
</head>
<body>
    <h1>实例：模块的Singleton模式</h1>

    <script>
        // 使用Symbol实现单例模式
        const singleton = {
            [Symbol.for('instance')]: {
                name: '单例对象'
            }
        };

        // 获取实例的方法
        function getInstance() {
            return singleton[Symbol.for('instance')];
        }

        // 测试
        let instance1 = getInstance();
        let instance2 = getInstance();
        console.log(instance1 === instance2); // true

        // 无法通过常规方式获取实例
        console.log(Object.keys(singleton)); // []
        console.log(Object.getOwnPropertyNames(singleton)); // []
        // 只能通过Symbol.for获取
        console.log(Object.getOwnPropertySymbols(singleton)); // [Symbol(instance)]
    </script>
</body>
</html> 